1. Field of the Invention
The present invention is related to a data storage device or system and more particularly, to maintaining count-key-data (CKD) integrity in a data storage device or system.
2. Background Description
Mass storage devices, such as a Direct Access Storage Device (DASD), may store customer data in a Count-Key-Data (CKD) format. Meta data stored in a separate meta data track associated with each CKD track describes the associated CKD structure. The meta data, which may differ from CKD track to CKD track, is used to make track accesses and operations on the CKD data more efficient. Typical meta data may include for the associated CKD track such information as the CKD track format, the number of records on the CKD track, the number of sectors per record, the data field length and key field length of the records. Whenever a CKD track is format written, the meta data for the track is updated to reflect the new format of the CKD track.
Typically, data communications with DASD are cached in high performance memory for maximum input/output (I/O) performance. Non critical data, e.g., temporary data sets created during a sort job, may be maintained as cache fast write (CFW) modified in volatile memory, e.g., in high performance dynamic random access memory (DRAM). Since this is non-critical data with an acceptable risk of data loss, nothing is stored in non-volatile storage. So if the cache copy is lost, e.g., in a power failure, the data is lost as well as any indication that it was in cache or lost.
When a CKD track is format written as CFW modified, the updated meta data may be committed to the storage device before the formatted CKD track. Consequently, a failure before the new CKD track is committed may mean that the meta data does not match (is not synchronized to) its associated CKD track, e.g., if the cluster containing the modified CKD track crashes. If the uncommitted, perhaps, lost CKD track format differs from the previous CKD track format, then the meta data describes the uncommitted, lost CKD track, not the current, stale CKD track on the device. Since after the crash, the associated meta data for the CKD track does not match the format of the CKD track, re-accessing the CKD track subsequently, either for a read or an update/write operation, results in data errors, e.g., cyclic redundancy check (CRC), longitudinal redundancy check (LRC) and header physical address (PA) checks.
Thus, there is a need for a way to determine whether storage contains the correct meta data for associated CKD tracks and to selectively resynchronize meta data with its associated CKD tracks.